/**
 * @file version.h
 * @brief 
 * @author  ()
 * @version 1.0
 * @date 2024-09-13
 * 
 * @copyright Copyright (C) 2019 Queclink Wireless Solutions (ShenZhen) Co., Ltd. All Rights Reserved.
 * 
 * @par 修改日志:
 * <table>
 * <tr><th>Date       <th>Version <th>Author  <th>Description
 * <tr><td>2024-09-13 <td>1.0     <td>     <td>内容
 * </table>
 */
#ifndef __VERSION_H
#define __VERSION_H

#ifdef __cplusplus
extern "C" {
#endif

#include "FreeRTOSConfig.h"

#define PROJECT_NAME        "DA35D1C10"			/* BG95-M5 */
#ifdef DA35D1C10_C
#define BRANCH_VERSION      "R00"           /* 软件分支号 R01 - 欧版 R10 - 美版 */
#else // DA35D1C10_F
#define BRANCH_VERSION      "R10"           /* 软件分支号 R01 - 欧版 R10 - 美版 */  
#endif
#define MAJOR_VERSION       "A01"           /* 归档版本号 */
#define MINOR_VERSION       "V10"           /* 开发版本号 */


#ifndef NDEBUG
#define BETA_VERSION       "B02"
#endif

#ifndef BETA_VERSION
#define SOFTWARE_VERSION    PROJECT_NAME"_"BRANCH_VERSION MAJOR_VERSION MINOR_VERSION 	      /* 软件版本号(非认证版本号) */
#else
#define SOFTWARE_VERSION    PROJECT_NAME"_"BRANCH_VERSION MAJOR_VERSION MINOR_VERSION BETA_VERSION	      /* 软件版本号(非认证版本号) */
#endif
#define SOFTWARE_VERSION_HEX "010102"         /* 记得同步调整 (R)01(A)01(V)01 */


/*认证版本定义-注：不允许更改 --------------------------------------------*/
#define FIRWARE_CERT_VERSION   BRANCH_VERSION MAJOR_VERSION MINOR_VERSION 	 /* 软件版本号(认证版本号)  暂未认证，与发布版本保持一致 */
#define HARDWARE_CERT_VERSION  "V1.02"     /* 硬件版本号(认证版本号) */

#define DEV_BASIC_INFO \
  "DA35D10C10, IoT MCU, GNSS with AG3335MV, OTA with Quectel EG915U, EGPRS Cat-M1 network, 6 Axis Sensor with ICM42607.\r\n"
  
#ifdef STM32U575xx
#if (0 == configENABLE_TRUSTZONE)
#define CPU_BASIC_INFO \
  "STM32U575, Ultra-low-power with FPU Arm Cortex-M33 MCU with TrustZone(diasble), 160 MHz with 1 Mbyte of Flash memory.\r\n"
#else
#define CPU_BASIC_INFO \
  "STM32U575, Ultra-low-power with FPU Arm Cortex-M33 MCU with TrustZone(enable), 160 MHz with 1 Mbyte of Flash memory.\r\n"
#endif
#endif

#ifdef STM32H563xx
#if (0 == configENABLE_TRUSTZONE)
#define CPU_BASIC_INFO \
  "STM32H563,High-performance,Arm Cortex-M33 with TrustZone(disable),MCU with 1-MByte Flash,640-Kbyte RAM,250 MHz CPU\r\n"
#else
#define CPU_BASIC_INFO \
  "STM32H563,High-performance,Arm Cortex-M33 with TrustZone(enable),MCU with 1-MByte Flash,640-Kbyte RAM,250 MHz CPU\r\n"
#endif
#endif

#pragma pack(4)
typedef struct {
    const char  version[32];        /**< Bootloader version, string, such as "PROJ_BOOTR00A01V02" */
    const char  timestamp[32];      /**< Bootloader release timestamp, string, such as "Tue Sep 16 13:03:52 2023" */
} bootloader_info_t;
#pragma pack()

#define FW_START_ADDR  0x08000000
extern const bootloader_info_t *boot;

#ifdef __cplusplus
}
#endif

#endif // __VERSION_H